//
//  QSCustomPageControl.m
//  myTest
//
//  Created by Song on 2017/10/9.
//  Copyright © 2017年 Song. All rights reserved.
//

#import "QSCustomPageControl.h"

#import "QSCustomPageModel.h"

#import "QSBaseTool.h"

@interface QSCustomPageControl()
@property (nonatomic, strong) QSCustomPageModel *defaultPageModel;
@end

@implementation QSCustomPageControl
-(instancetype)initWithFrame:(CGRect)frame{
    if(self = [super initWithFrame:frame]){
        [self setDefaultDate];
    }
    return self;
}

- (void)setDefaultDate
{
    self.backgroundColor = [UIColor clearColor];
    
    QSCustomPageModel *model = [[QSCustomPageModel alloc] init];
    model.pointWidth = 6.0;
    model.pointHeight = 6.0;
    model.pointSpacing = 8.0;
    model.scale = 1.0;
    model.isEllipse = NO;
    model.otherColor = [UIColor redColor];
    model.currentColor = [UIColor blueColor];
    
    self.defaultPageModel = model;
}

#pragma mark - set
- (void)setPageModel:(QSCustomPageModel *)pageModel
{
    _pageModel = pageModel;
    
    pageModel.pointWidth = pageModel.pointWidth > 0.0 ? pageModel.pointWidth : self.defaultPageModel.pointWidth;
    pageModel.pointHeight = pageModel.pointHeight > 0.0 ? pageModel.pointHeight : self.defaultPageModel.pointHeight;
    pageModel.pointSpacing = pageModel.pointSpacing > 0.0 ? pageModel.pointSpacing : self.defaultPageModel.pointSpacing;
    pageModel.otherColor = pageModel.otherColor ? pageModel.otherColor : self.defaultPageModel.otherColor;
    pageModel.currentColor = pageModel.currentColor ? pageModel.currentColor : self.defaultPageModel.currentColor;
    pageModel.scale = pageModel.scale > 0.0 ? pageModel.scale : self.defaultPageModel.scale;
    pageModel.isEllipse = pageModel.isEllipse ? pageModel.isEllipse : self.defaultPageModel.isEllipse;
    
    [self createPointView];
}

-(void)setCurrentPage:(NSInteger)currentPage{

    if(_currentPage == currentPage)
        return;

    _currentPage = currentPage;
    [self createPointView];
}

- (void)setNumberOfPages:(NSInteger)numberOfPages
{
    _numberOfPages = numberOfPages;
    
    [self createPointView];
}

/**
 *  创建视图
 */
-(void)createPointView{
    // 清除视图
    [self clearView];
    
    if(self.numberOfPages <= 0)
        return;
    
    // PageControl位置
    CGFloat startX = 0;
    CGFloat mainWidth = self.numberOfPages * (self.pageModel.pointWidth + self.pageModel.pointSpacing);
    switch (self.pageModel.pageControlLocation) {
        case QSPageControlLocation_Right:
            startX = kScreenWidth - mainWidth - kAdaptedWithWidthValue(30.0);
            break;
            
        case QSPageControlLocation_Middle:
            startX = (self.frame.size.width - mainWidth) / 2;
            break;
            
        case QSPageControlLocation_Left:
            startX = kAdaptedWithWidthValue(30.0);
            break;
            
        default:
            break;
    }
    
    CGFloat centerY = 0;
    centerY = self.frame.size.height / 2;
    
    // 动态创建点
    for (int page = 0; page < self.numberOfPages; page++) {
        if(page == self.currentPage) {
            UIImageView *currPointView = [[UIImageView alloc] init];
            
            if (self.pageModel.isEllipse) {
                currPointView.frame = CGRectMake(startX, 0, self.pageModel.pointWidth * self.pageModel.scale, self.pageModel.pointHeight);
                currPointView.layer.cornerRadius = self.pageModel.pointHeight / 2;
            } else {
                currPointView.frame = CGRectMake(startX, 0, self.pageModel.pointWidth * self.pageModel.scale, self.pageModel.pointHeight * self.pageModel.scale);
                currPointView.layer.cornerRadius = self.pageModel.pointHeight * self.pageModel.scale / 2;
            }
            
            CGPoint myCenter = currPointView.center;
            myCenter.y = centerY;
            currPointView.center = myCenter;
            
            currPointView.backgroundColor = self.pageModel.currentColor;
            [self addSubview:currPointView];
            startX=CGRectGetMaxX(currPointView.frame) + self.pageModel.pointSpacing;
            
            if(self.pageModel.currentImg){
                currPointView.backgroundColor = [UIColor clearColor];
                currPointView.image = self.pageModel.currentImg;
            }
            
        } else {
            UIImageView *otherPointView = [[UIImageView alloc] initWithFrame:CGRectMake(startX, 0, self.pageModel.pointWidth, self.pageModel.pointHeight)];
            
            CGPoint myCenter = otherPointView.center;
            myCenter.y = centerY;
            otherPointView.center = myCenter;
            
            otherPointView.backgroundColor = self.pageModel.otherColor;
            otherPointView.layer.cornerRadius = self.pageModel.pointHeight / 2;
            [self addSubview:otherPointView];
            startX = CGRectGetMaxX(otherPointView.frame) + self.pageModel.pointSpacing;
            
            if(self.pageModel.otherImg){
                otherPointView.backgroundColor = [UIColor clearColor];
                otherPointView.image = self.pageModel.otherImg;
            }
        }
    }
}

/**
 *  清除原有视图
 */
-(void)clearView{
    [self.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
}
@end
